package modelo;

import gui.curso.PanelCurso;
import interfaz.IEntidad;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import manejador.ManejadorDeEstudiante;
import entidad.Estudiante;

public class ModeloEstudiantesPorCurso extends AbstractTableModel {
	private static final long serialVersionUID = 1L;
	private String[] encabezados = null;
	private List<IEntidad> estudiantesPorCurso = null;
	private static ModeloEstudiantesPorCurso instancia = null;
	private Estudiante estudiante = null;
	private ManejadorDeEstudiante manejadorDeEstudiante = null;
	private static String parametro = "ACTIVO";

	private ModeloEstudiantesPorCurso() {
		encabezados = new String[] { "ID Estudiante", "Nombre", "Apellido",
				"Telefono", "Sexo", "Direccion", "Nombre Tutor",
				"Apellido Tutor", "Telefono Tutor", "Estatus" };
		manejadorDeEstudiante = ManejadorDeEstudiante.getInstancia();
		estudiantesPorCurso = manejadorDeEstudiante
				.getEntidadDinamicaEstudiantesPorCurso(parametro, PanelCurso
						.getIdCurso());

	}

	public static ModeloEstudiantesPorCurso getInstancia() {
		if (instancia == null) {
			instancia = new ModeloEstudiantesPorCurso();
		}
		return instancia;
	}

	public String getColumnName(int indice) {
		return encabezados[indice];
	}

	@Override
	public int getColumnCount() {

		return encabezados.length;
	}

	@Override
	public int getRowCount() {
		return estudiantesPorCurso.size();
	}

	@Override
	public Object getValueAt(int fila, int columna) {
		String retorno = "";
		estudiante = (Estudiante) estudiantesPorCurso.get(fila);
		switch (columna) {
		case 0:
			retorno = String.valueOf(estudiante.getIdEstudiante());
			break;
		case 1:
			retorno = estudiante.getNombre();
			break;
		case 2:
			retorno = estudiante.getApellido();
			break;
		case 3:
			retorno = estudiante.getTelefono();
			break;

		case 4:
			retorno = estudiante.getSexo();
			break;
		case 5:
			retorno = estudiante.getDireccion();
			break;
		case 6:
			retorno = estudiante.getNombreTutor();
			break;
		case 7:
			retorno = estudiante.getApellidoTutor();
			break;
		case 8:
			retorno = estudiante.getTelefonoTutor();
			break;
		case 9:
			retorno = estudiante.getEstatus();
			break;

		}
		return retorno;
	}

	public void actualizarTableParametros(String parametro) {
		setParametro(parametro);
		estudiantesPorCurso = manejadorDeEstudiante
				.getEntidadDinamicaEstudiantesPorCurso(parametro, PanelCurso
						.getIdCurso());
		fireTableDataChanged();
	}

	
	
	public static String getParametro() {
		return parametro;
	}

	public static void setParametro(String parametro) {
		ModeloEstudiantesPorCurso.parametro = parametro;
	}

}
